import { fileURLToPath, URL, parse } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import postcssPxtoRem from 'postcss-pxtorem'
import Mock from 'mockjs'

// export const userList = Mock.mock({
//   'userList|20': [
//     {
//       id: '@id',
//       name: '@cname',
//       'theme|1000-9000': 1,
//       'address|1': ['外部链接', '内部链接'],
//       'commod|10-99': 1,
//       'total|100-999': 100,
//       'gmv|100-9999': 100,
//       'status|1': ['已上线', '已下线']
//     }
//   ]
// })

// const myServerPlugin = () => ({
//   name: 'myServerPlugin',
//   configureServer(server: any) {
//     server.middlewares.use((req: any, res: any, next: any) => {
//       if (req.url.includes('/api')) {
//         const { pathname, query } = parse(req.url, true)
//         if (pathname === '/api/getUser') {
//           const total = userList.userList.length
//           res.end(
//             JSON.stringify({
//               code: 1,
//               msg: '渲染成功',
//               total
//             })
//           )
//         } else if (pathname === '/api/delUser') {
//           const { id } = query
//           const index = userList.userList.findIndex((item: any) => item.id === id)
//           userList.userList.splice(index, 1)
//           res.end(
//             JSON.stringify({
//               code: 1,
//               msg: '删除成功'
//             })
//           )
//         }
//       } else {
//         next()
//       }
//     })
//   }
// })

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  css: {
    postcss: {
      plugins: [
        postcssPxtoRem({
          rootValue: 192, // 按照自己的设计稿修改 1920/10
          unitPrecision: 5, // 保留到5位小数
          selectorBlackList: ['ignore'], // 忽略转换正则匹配项
          propList: ['*', '!border'],
          replace: true,
          mediaQuery: false, // 媒体查询( @media screen 之类的)中不生效
          minPixelValue: 1 //可以选择px小于1的不会被转换
        })
      ]
    }
  },
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  server: {
    open: true, // 设置服务启动时是否自动打开浏览器
    cors: true, // 允许跨域
    // 设置代理，根据我们项目实际情况配置
    proxy: {
      //apiTest是自行设置的请求前缀，按照这个来匹配请求，有这个字段的请求，就会进到代理来
      '/api': {
        target: 'http://localhost:3002/v1.0/api/',
        changeOrigin: true, //是否跨域
        rewrite: (path) => path.replace('api', '') //重写匹配的字段，如果不需要放在请求路径上，可以重写为""
      }
    }
  }
})
